/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
define(["require", "exports"], function (require, exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    class CommandManager {
        constructor(vscode) {
            this.vscode = vscode;
            this.commands = new Map();
        }
        dispose() {
            for (const registration of this.commands.values()) {
                registration.dispose();
            }
            this.commands.clear();
        }
        register(command) {
            this.registerCommand(command.id, command.execute, command);
            return command;
        }
        registerCommand(id, impl, thisArg) {
            if (this.commands.has(id)) {
                return;
            }
            this.commands.set(id, this.vscode.commands.registerCommand(id, impl, thisArg));
        }
    }
    exports.CommandManager = CommandManager;
});
